home *** CD-ROM | disk | FTP | other *** search
/ Directorty Opus 5 - Magellan 2 / Opus 5 - Magellan 2.iso / Extras / hotlist_source / source / ResourceNodes.h < prev    next >
C/C++ Source or Header  |  1996-10-02  |  3KB  |  57 lines

  1. /*====================================================================================-.
  2. || Resource Node structures.                                                          ||
  3. `-====================================================================================*/
  4. typedef struct resnode
  5. {
  6.     struct resnode *rn_Next;    /* Pointer to next ResNode, if any. */
  7.     struct resnode *rn_Prev;    /* Pointer to previous ResNode, if any. */
  8.  
  9.     ULONG    rn_Size;                /* Size of allocation (to be made). */
  10.     void   *rn_Mem;                    /* Memory allocated. Must have size rn_MemSize */
  11.     STRPTR    rn_Name;                /* (File)Name associated with ResNode. */
  12.     BPTR    rn_FHandle;                /* File Handle. */
  13.     BPTR    rn_Lock;                /* File Lock. */
  14.     struct FileInfoBlock *rn_FIB;    /* File Info Block. */
  15.     BOOL    rn_TempFile;            /* If TRUE, file deleted when ResNode is. */
  16. } ResNode;
  17.  
  18.  
  19. typedef struct resnode_data
  20. {
  21.     APTR     poolhead;            // Memory pool handler. (Uses Opus5 routines)
  22.     ResNode *resnode_base;        // The base (first) node in linked list.
  23.     void    *data;                // For your own use. Given to informUser() only.
  24. } ResNode_Data;
  25.  
  26.  
  27. /*====================================================================================-.
  28. || Magic Numbers                                                                      ||
  29. `-====================================================================================*/
  30. #define RN_INUSE_DELAY 2        // Time, in seconds, to wait between retries when a
  31.                                 // resource is in use.
  32. #define RN_INUSE_RETRIES 2        // Number of times to retry before giving up
  33.                                 // (so total attempts is RETRIES+1).
  34.  
  35. /*====================================================================================-.
  36. || Prototypes for Functions in ResourceNodes.c                                          ||
  37. `-====================================================================================*/
  38.  
  39. ResNode *createResNode(ResNode_Data *rnd);
  40. void deleteResNode(ResNode_Data *rnd,ResNode *doomedResNode);
  41. void deleteAllResNodes(ResNode_Data *rnd);
  42.  
  43. void *allocMemResNode(ResNode_Data *rnd,ResNode *daddyResNode,ULONG memSize);
  44. ResNode *allocNewResNode(ResNode_Data *rnd,ULONG memSize);
  45. void freeMemResNode(ResNode_Data *rnd,ResNode *dietResNode);
  46.  
  47. BPTR lockFileResNode(ResNode_Data *rnd,ResNode *lockResNode,LONG lockmode);
  48. void unlockFileResNode(ResNode_Data *rnd,ResNode *lockedResNode);
  49.  
  50. struct FileInfoBlock *examineResNode(ResNode_Data *rnd,ResNode *rn);
  51. void freeFIBResNode(ResNode_Data *rnd,ResNode *rn);
  52.  
  53. BPTR openFileResNode(ResNode_Data *rnd,ResNode *rn,LONG mode);
  54. void closeFileResNode(ResNode_Data *rnd,ResNode *rn);
  55.  
  56. void deleteFileResNode(ResNode_Data *rnd,ResNode *rn);
  57.